package com.example.springmvcdemo.utils;

import com.example.springmvcdemo.entity.UserInfo;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JSONUtils {
    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        UserInfo userInfo = new UserInfo(18, "qing", 2);
//        userInfo.setAge(18);
//        userInfo.setId(1);
//        userInfo.setName("刘澜");

        //对象转换成JSON
        String JsonString = objectMapper.writeValueAsString(userInfo);
        System.out.println(JsonString);

        //JSON字符串转换成Java对象
        //这里jackson库里面的实现方式是,先使用默认的无参构造函数构造一个对象
        //然后再给这个对象进行复制,如果这个对象没有默认的午餐构造函数,那么就会报错
        //所以我们写了类的带参的函数之后,记得也写一个默认的无参构造函数
        UserInfo userInfo1 = objectMapper.readValue(JsonString, UserInfo.class);
        System.out.println(userInfo1);
    }
}

//JSON优点
//1. 简单易用: 语法简单，易于理解和编写，可以快速地进行数据交换
//2. 跨平台支持: JSON可以被多种编程语言解析和生成, 可以在不同的平台和语言之间进行数据交换和传输
//3. 轻量级: 相较于XML格式, JSON数据格式更加轻量级, 传输数据时占用带宽较小, 可以提高数据传输速度
//4. 易于扩展: JSON的数据结构灵活，支持嵌套对象和数组等复杂的数据结构，便于扩展和使用
//5. 安全性: JSON数据格式是一种纯文本格式，不包含可执行代码, 不会执行恶意代码，因此具有较高的安全性
//基于以上特点, JSON在Web应用程序中被广泛使用, 如前后端数据交互、API接口数据传输等
